#include "cmodel.h"

/**
 * @brief 特征图逐点相加 结果保留在第一个参数
 * 
 * @param a 参与加法的第一个参数 同时用于保存结果
 * @param b 参与加法的第二个参数
 */
void mat_add(featureMap *a, featureMap *b)
{
    // check args
    if (a->channels != b->channels || a->height != b->height || a->width != b->width)
    {
        debug("wrong width or height or channel\n");
        return;
    }
    int CH = a->channels;
    int IW = a->width;
    int IH = a->height;
    for (int ch = 0; ch < CH; ch++)
    {
        for (int iw = 0; iw < IW; iw++)
        {
            for (int ih = 0; ih < IH; ih++)
            {   // a[ch][iw][ih] = b[ch][iw][ih]
                *(a->data + ch*IW*IH + iw*IH + ih) += \
                *(b->data + ch*IW*IH + iw*IH + ih);
            }
        }
    }
}